Added directory with Glade catalog
authorTristan Van Berkom <tristanvb@openismus.com>
Sun, 24 Mar 2013 16:40:57 +0000 (01:40 +0900)
committerTristan Van Berkom <tristanvb@openismus.com>
Mon, 8 Apr 2013 12:19:27 +0000 (21:19 +0900)
This catalog can be used to work with GTK+'s private widget types,
this patch exposes a private function gtk_glade_catalog_init() which
Glade will use for the sole purpose of initializing some private widget
types in GTK+ that are referenced from various GTK+ composite widget
xml files.

gtk/Makefile.am
gtk/glade/README.glade [new file with mode: 0644]
gtk/glade/gtk-private-widgets.xml [new file with mode: 0644]
gtk/gtk.symbols
gtk/gtkgladecatalog.c [new file with mode: 0644]

index 481fda21551f3db2b4000365a0ffa226ffbce276..f1784606baf28df54ee36fc3402413db80936ccc 100644 (file)
@@ -732,6 +732,7 @@ gtk_base_c_sources =                \
        gtkfontchooserutils.c   \
        gtkfontchooserwidget.c  \
        gtkframe.c              \
+       gtkgladecatalog.c       \
        gtkgrid.c               \
        gtkheaderbar.c          \
        gtkhsla.c               \
diff --git a/gtk/glade/README.glade b/gtk/glade/README.glade
new file mode 100644 (file)
index 0000000..f8c59c5
--- /dev/null
@@ -0,0 +1,17 @@
+The catalog in this directory defines some widgets that are private
+to GTK+ and is needed to edit .ui files defining composite classes
+in GTK+.
+
+In order to edit any composite classes in GTK+, startup Glade
+in the following way, example:
+
+    cd /path/to/gtk+/
+    GLADE_CATALOG_SEARCH_PATH=`pwd`/gtk/glade glade gtk/gtkfilechooserdefault.ui
+
+Documentation for updating this catalog can be found here:
+    https://developer.gnome.org/gladeui/stable/
+
+Note also that when including private GTK+ widgets as components, it is
+important to call g_type_ensure () to register the type explicitly
+before calling gtk_container_init_template(), otherwise GtkBuilder will
+not be able to properly load the type.
diff --git a/gtk/glade/gtk-private-widgets.xml b/gtk/glade/gtk-private-widgets.xml
new file mode 100644 (file)
index 0000000..1a65e25
--- /dev/null
@@ -0,0 +1,36 @@
+<glade-catalog name="gtkprivate"
+              version="3.10"
+              depends="gtk+"
+              library="gtk-3">
+  <init-function>gtk_glade_catalog_init</init-function>
+
+  <glade-widget-classes>
+    <!-- base GTK+ private widgets -->
+    <glade-widget-class name="GtkPathBar" generic-name="pathbar" title="Path Bar" icon-name="widget-gtk-toolbar"/>
+    <glade-widget-class name="GtkColorSwatch" generic-name="colorswatch" title="Color Swatch" icon-name="widget-gtk-colorselection"/>
+    <glade-widget-class name="GtkColorPlane" generic-name="colorplane" title="Color Plane" icon-name="widget-gtk-colorselection"/>
+    <glade-widget-class name="GtkColorScale" generic-name="colorscale" title="Color Scale" icon-name="widget-gtk-colorselection"/>
+    <glade-widget-class name="GtkScaleButtonScale" generic-name="scalebuttonscale" title="Scale Button Scale"/>
+    <glade-widget-class name="ShortcutsPaneModelFilter" generic-name="shortcutsfilter" title="Shortcuts Filter"
+                       icon-name="widget-gtk-treemodelfilter"/>
+
+    <!-- gtkunixprint private widgets -->
+    <glade-widget-class name="GtkPrinterOptionWidget" generic-name="printeroptionwidget" title="Printer Option Widget"
+                       icon-name="widget-gtk-frame">
+      <properties>
+       <property id="orientation" default="GTK_ORIENTATION_HORIZONTAL"/>
+       <property id="size" disabled="True"/>
+      </properties>
+    </glade-widget-class>
+  </glade-widget-classes>
+  
+  <glade-widget-group name="gtk-private" title="Private GTK+ Classes">
+    <glade-widget-class-ref name="GtkPathBar"/>
+    <glade-widget-class-ref name="GtkColorSwatch"/>
+    <glade-widget-class-ref name="GtkColorPlane"/>
+    <glade-widget-class-ref name="GtkColorScale"/>
+    <glade-widget-class-ref name="GtkScaleButtonScale"/>
+    <glade-widget-class-ref name="ShortcutsPaneModelFilter"/>
+    <glade-widget-class-ref name="GtkPrinterOptionWidget"/>
+  </glade-widget-group>
+</glade-catalog>
index 1937f11fd19f48a644824c42776f2e33a1fbbf67..53dcb2e33147ead5e755d7e0effd4c84e0b91b2f 100644 (file)
@@ -1193,6 +1193,7 @@ gtk_get_major_version
 gtk_get_micro_version
 gtk_get_minor_version
 gtk_get_option_group
+gtk_glade_catalog_init
 gtk_grab_add
 gtk_grab_get_current
 gtk_grab_remove
diff --git a/gtk/gtkgladecatalog.c b/gtk/gtkgladecatalog.c
new file mode 100644 (file)
index 0000000..310aa2b
--- /dev/null
@@ -0,0 +1,52 @@
+/* gtkgladecatalog.c
+ *
+ * Copyright (C) 2013 Openismus GmbH
+ *
+ * Authors:
+ *      Tristan Van Berkom <tristanvb@openismus.com>
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Library General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU Library General Public
+ * License along with this library. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include "gtkpathbar.h"
+#include "gtkcolorswatchprivate.h"
+#include "gtkcolorplaneprivate.h"
+#include "gtkcolorscaleprivate.h"
+
+#ifdef G_OS_UNIX
+#  include "gtkprinteroptionwidget.h"
+#endif
+
+/* Some forward declarations of internal types */
+GType _gtk_scale_button_scale_get_type (void);
+GType _shortcuts_pane_model_filter_get_type (void);
+
+/* This function is referred to in gtk/glade/gtk-private-widgets.xml
+ * and is used to ensure the private types for use in Glade while
+ * editing UI files that define GTK+'s various composite widget classes.
+ */
+void
+gtk_glade_catalog_init (const gchar *catalog_name)
+{
+  g_type_ensure (GTK_TYPE_PATH_BAR);
+  g_type_ensure (GTK_TYPE_COLOR_SWATCH);
+  g_type_ensure (GTK_TYPE_COLOR_PLANE);
+  g_type_ensure (GTK_TYPE_COLOR_SCALE);
+  g_type_ensure (_gtk_scale_button_scale_get_type ());
+  g_type_ensure (_shortcuts_pane_model_filter_get_type ());
+
+#ifdef G_OS_UNIX
+  g_type_ensure (GTK_TYPE_PRINTER_OPTION_WIDGET);
+#endif
+}